package com.huazai.dao;

import com.huazai.bean.po.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author EZTTU
 */
public interface UserMapper {
    /**
     * 登陆验证
     * select语句
     * 在传入参数为userID的时候用来验证用户名是否唯一
     * 也可以用来验证用户是否存在
     * 同样可以通过动态sql来得到用户的列表。
     *
     * @param user 传入的用户信息
     * @return 登录结果
     */
    List<User> validateLogin(User user);

    /**
     * 用户注册
     * insert语句,可以被重复的调用。例如在注册管理员和普通用户的时候，
     * 通过对authority的差异化传参，就可以实现。
     * 普通的insert前首先确定是否有相同的user存在
     *
     * @param user 江北注册的用户。
     * @return 注册结果
     */
    Boolean userRegistration(User user);

    /**
     * 激活用户的邮箱。未激活的邮箱是没有权限就进入系统的。
     * update语句
     *
     * @param activeCode 用户激活码，唯一！！！
     * @return 激活结果
     */
    Boolean activateUser(@Param("activeCode") String activeCode);

    /**
     * 更新用户的信息，直接传入一个user对象。
     * @param user 传入的user对象。
     * @return 更新结果
     */
    Boolean updateUserMessage(User user);

    /**
     * 通过用户邮箱来删除用户。
     * @param email 用户邮箱
     * @return 删除结果
     */
    Boolean deleteUserByEmail(@Param("email") String email);

    /**
     * 用于实现用户的模糊查询
     *
     * @param userName 模糊查询
     * @return 符合条件的用户
     */
    List<User> getUserByName(String userName);
}
